//package com.dlc.felear.xiaoensale.helper;
//
//import android.content.Context;
//import android.text.TextUtils;
//import android.util.Log;
//
//import com.dlc.felear.xiaoensale.constant.Constant;
//import com.dlc.felear.xiaoensale.message.ClientHeartBeat;
//import com.dlc.felear.xiaoensale.message.ClientTcpData;
//import com.dlc.felear.xiaoensale.utils.DesUtils;
//import com.dlc.felear.xiaoensale.utils.DeviceStatusSuper;
//import com.easysocket.EasySocket;
//import com.easysocket.config.EasySocketOptions;
//import com.easysocket.connection.heartbeat.HeartManager;
//import com.easysocket.entity.OriginReadData;
//import com.easysocket.entity.SocketAddress;
//import com.easysocket.interfaces.conn.ISocketActionListener;
//import com.itdlc.android.library.utils.APPDidUtil;
//
//import org.simple.eventbus.EventBus;
//
//import java.net.InetSocketAddress;
//import java.util.Map;
//
//public class EasySocketHelper {
//    private static final String TAG = "EasySocketHelper";
//    public static final String EVENT_NOTIFY_OPEN_DOOR = "event_notify_open_door";
//    private static EasySocketHelper instance;
//    private Context context;
//    private String deviceId;
//    private static final String KEY = "DLCappis";
//
//    public static EasySocketHelper getInstance(Context context, String ip, int port) {
//        log("ip:" + ip + " port:" + port);
//        if (instance == null) {
//            instance = new EasySocketHelper(context, ip, port);
//        }
//        return instance;
//    }
//
//    public static EasySocketHelper getInstance() {
//        if (instance == null) {
//
//        }
//        return instance;
//    }
//
//    private EasySocketHelper(Context context, String ip, int port) {
//        this.context = context;
//        deviceId = APPDidUtil.getAppDid();
//        initEasySocket(ip, port);
//    }
//
//
//    private void initEasySocket(String ip, int port) {
//        // socket配置
//        EasySocketOptions options = new EasySocketOptions.Builder()
//                // 主机地址，请填写自己的IP地址，以getString的方式是为了隐藏作者自己的IP地址
//                .setSocketAddress(new SocketAddress(ip, port))
//                .setHeartbeatFreq(Constant.HEART_REP*1000)
//                .setMaxHeartbeatLoseTimes(Constant.HEART_MAX_TIMES)
//                .build();
//
//        // 初始化
//        EasySocket.getInstance()
//                .createConnection(options, context);// 创建一个socket连接
//        initListener();
//    }
//
//    public void sendHeartData() {
//        ClientHeartBeat clientHeartBeat = new ClientHeartBeat();
//        clientHeartBeat.setMacno(deviceId);
//        EasySocket.getInstance().startHeartBeat(clientHeartBeat.pack(), new HeartManager.HeartbeatListener() {
//            @Override
//            public boolean isServerHeartbeat(OriginReadData orginReadData) {
//                try {
//                    String s = orginReadData.getBodyString();
//                    Log.e(TAG,"心跳:"+s);
//                    if (!TextUtils.isEmpty(s)) {
//                        EventBus.getDefault().post(s, Constant.LIVE_CONNNECT_STATUS);
//                        return true;
//                    }
//                } catch (Exception e) {
//
//                }
//                return false;
//            }
//        });
//    }
//
//
//
//    private void initListener() {
//        EasySocket.getInstance().subscribeSocketAction(new ISocketActionListener() {
//            @Override
//            public void onSocketConnSuccess(SocketAddress socketAddress) {
//                log("onSocketConnSuccess=" + JsonHelper.toJson(socketAddress));
//                sendHeartData();
//            }
//
//            @Override
//            public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) {
//                log("onSocketConnFail=" + JsonHelper.toJson(socketAddress));
//            }
//
//            @Override
//            public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) {
//                log("onSocketDisconnect=" + JsonHelper.toJson(socketAddress));
//            }
//
//            @Override
//            public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) {
//            }
//
//            @Override
//            public void onSocketResponse(SocketAddress socketAddress, String readData) {
//                log("onSocketResponse readData=" + readData);
//                try {
//                    if(!readData.contains("success")&&readData.length()>8){
//                        readData(readData.substring(7));
//                    }
//                    DeviceStatusSuper.getInstance().recieveSocketData(readData);
//                }catch (Exception e){
//
//                }
//            }
//
//            @Override
//            public void onSocketResponse(SocketAddress socketAddress, byte[] readData) {
//            }
//        });
//    }
//
//
//
//    private static void log(String msg) {
//        Log.e(TAG, msg);
//    }
//
//
//    public void sendData(Map<String,Object> data){
//        ClientTcpData clientHeartBeat = new ClientTcpData();
//        clientHeartBeat.setMacno(deviceId);
//        if(data.containsKey("notify_url")){
//            clientHeartBeat.setNotify_url((String)data.get("notify_url"));
//        }
//        clientHeartBeat.setData(JsonHelper.toJson(data));
//        clientHeartBeat.setType("333");
//        Log.e(TAG,"data:"+JsonHelper.toJson(clientHeartBeat));
//        EasySocket.getInstance().upMessage(clientHeartBeat.pack());
//    }
//    public void sendData(Map<String,Object> data,String deviceId){
//        ClientTcpData clientHeartBeat = new ClientTcpData();
//        clientHeartBeat.setMacno(deviceId);
//        if(data.containsKey("notify_url")){
//            clientHeartBeat.setNotify_url((String)data.get("notify_url"));
//        }
//        clientHeartBeat.setData(JsonHelper.toJson(data));
//        clientHeartBeat.setType("333");
//        Log.e(TAG,"data:"+JsonHelper.toJson(clientHeartBeat));
//        EasySocket.getInstance().upMessage(clientHeartBeat.pack());
//    }
//
//    public void readData(String data) {
//        String result = null;
//        log("解密前的数据: " + data);
//        try {
//            result = DesUtils.decode(KEY, data);
//            log("接收数据: " + result);
//        } catch (Exception e) {
//            log(e.getMessage());
//        }
//        // 解析返回结果
//        if (!TextUtils.isEmpty(result)) {
//            // 服务器发送的开门指令
//            EventBus.getDefault().post(result, EVENT_NOTIFY_OPEN_DOOR);
//        }
//    }
//
//
//}
